home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / mods / misc / CUST_HangOn.lha / SuperHangOn / SuperHangOn_Loader.s < prev    next >
Text File  |  1997-03-31  |  13KB  |  716 lines

  1. *************************************************
  2. * Super Hang On Loader by The Source (1988).    *
  3. * Adapted by Mr.STYCKX / Nicolas Pomarède    *
  4. *                        *
  5. * Original replay was in $60000.        *
  6. * Replay Speed : 160 Hz ( Timer=$22f6/2 )    *
  7. *                        *
  8. * EaglePlayer / Delitracker port : 29/03/97    *
  9. *    Volume                    *
  10. *    Balance                    *
  11. *    SubSong                    *
  12. *    SongEnd                    *
  13. *    EP_Voices                *
  14. *    EP_StructInit (Analyzer)        *
  15. *************************************************
  16.  
  17.     opt    o+
  18.  
  19.     output    ram:CUST.SuperHangOn_Loader
  20.  
  21.  
  22. SHO_CIA        =    $22f6/2
  23.  
  24. SHO_TEST    =        0    ; 0 => BUILD COMPLETE CUSTOM MODULE
  25.                     ; 1 => BUILD SMALL CODE FOR TESTING
  26.  
  27.     section    SHO,code
  28.  
  29.  
  30.  
  31.     incdir    "Include:"    include    "misc/DeliPlayer.i"
  32.     include    "misc/EaglePlayer.i"
  33.  
  34.  
  35.     IFEQ    SHO_TEST-0            ; COMPLETE VERSION
  36.  
  37.  
  38.     PLAYERHEADER PlayerTagArray
  39.  
  40.     dc.b '$VER: Super Hang On Loader Music (1988) custom player V1.0, '
  41.     dc.b 'ripped and adapted by Mr.STYCKX (03/97)',0
  42.  
  43.     EVEN
  44.  
  45. PlayerTagArray
  46.     dc.l    DTP_CustomPlayer,1        ; CustomPlayer - Tag (important !!!)
  47.     dc.l    DTP_Flags,PLYF_CUSTOM!PLYF_SONGEND
  48.  
  49.     dc.l    DTP_PlayerVersion,1<<16+0    ; v1.0
  50.     dc.l    EP_PlayerVersion,1
  51.     dc.l    DTP_PlayerName,PName
  52.     dc.l    DTP_Creator,CName
  53.  
  54.     dc.l    DTP_InitPlayer,InitPlay        ; alloc audio
  55.     dc.l    DTP_EndPlayer,EndPlay        ; free audio
  56.     dc.l    DTP_InitSound,SHO_init        ; init custom data
  57.     dc.l    DTP_EndSound,SHO_end        ; clear DMA
  58.  
  59.     dc.l    DTP_SubSongRange,SHO_SubSongRange
  60.  
  61.     dc.l    DTP_Interrupt,SHO_Play
  62.  
  63.     dc.l    DTP_Volume,SHO_Volume
  64.     dc.l    DTP_Balance,SHO_Volume
  65.  
  66.     dc.l    EP_Voices,SHO_SetVoices
  67.     dc.l    EP_StructInit,SHO_StructInit
  68.  
  69.     dc.l    EP_Flags,EPB_Voices!EPB_Analyzer!EPB_Volume!EPB_Balance!EPB_Songend
  70.  
  71.     dc.l    TAG_DONE
  72.  
  73.  
  74. PName    dc.b    "Super Hang On Loader Custom v1.0",0
  75. CName    dc.b    "Music by The Source (1988).",$a
  76.     dc.b    "Adapted by Mr.STYCKX (30/03/97)",0
  77.  
  78.     EVEN
  79.  
  80.  
  81. SHO_StructAnalyzer            ; transmis à EaglePlayer pour gérer
  82.     ds.l    UPS_SizeOF        ; les analyzers
  83.  
  84.  
  85.  
  86. *-----------------------------------------------------------------------*
  87. ;
  88. ; Init Player
  89.  
  90. InitPlay
  91.     move.l    dtg_SongEnd(a5),SHO_SongEnd
  92.  
  93.     move.l    dtg_AudioAlloc(a5),a0        ; Function
  94.     jmp    (a0)
  95.  
  96.  
  97. *-----------------------------------------------------------------------*
  98. ;
  99. ; End Player
  100.  
  101. EndPlay
  102.     move.l    dtg_AudioFree(a5),a0        ; Function
  103.     jmp    (a0)
  104.  
  105.  
  106. *-----------------------------------------------------------------------*
  107. ;
  108. ; Init Custom Replay Routine
  109.  
  110. SHO_init
  111.     move.w    #SHO_CIA,dtg_Timer(a5)
  112.     move.l    dtg_SetTimer(a5),a0
  113.     jsr    (a0)
  114.     move.w    dtg_SndNum(a5),d0    ; sub song nbr (1..)
  115.     bra    SHO_InitSong
  116.  
  117.     move.w    #SHO_CIA,dtg_Timer(a5)
  118.     move.l    dtg_SetTimer(a5),a0
  119.     jmp    (a0)
  120.  
  121.  
  122.  
  123. *-----------------------------------------------------------------------*
  124. ;
  125. ; Clear Audio Reg.
  126.  
  127. SHO_end
  128.     move.w    #$f,$dff096
  129.     clr.w    $dff0a8
  130.     clr.w    $dff0b8
  131.     clr.w    $dff0c8
  132.     clr.w    $dff0d8
  133.     rts
  134.  
  135.  
  136.  
  137. *-----------------------------------------------------------------------*
  138. ;
  139. ; Interrupt routine called every 1/80 s
  140.  
  141. SHO_Play
  142.     bra.s    SHO_InterVBL
  143.  
  144.  
  145.  
  146. *-----------------------------------------------------------------------*
  147. ;
  148. ; Returns min and max sub song
  149.  
  150. SHO_SubSongRange
  151.     moveq    #1,d0            ; min
  152.     moveq    #1,d1            ; max
  153.  
  154.     rts
  155.  
  156.  
  157. *-----------------------------------------------------------------------*
  158. ;
  159. ; Set Volume
  160.  
  161. SHO_Volume
  162.     move.w    dtg_SndLBal(a5),d0    ; Vol Left
  163.     mulu    dtg_SndVol(a5),d0    ; Vol Max
  164.     lsr.w    #6,d0
  165.     move.w    d0,SHO_MasterVolA    ; final Vol Left
  166.     move.w    d0,SHO_MasterVolD
  167.  
  168.     move.w    dtg_SndRBal(a5),d0
  169.     mulu    dtg_SndVol(a5),d0
  170.     lsr.w    #6,d0
  171.     move.w    d0,SHO_MasterVolB
  172.     move.w    d0,SHO_MasterVolC
  173.  
  174.     rts
  175.  
  176.  
  177. *-----------------------------------------------------------------------*
  178. ;
  179. ; Set DMA Voices
  180.  
  181. SHO_SetVoices
  182.     or.w    #$8000,d0
  183.     move.w    d0,SHO_DMA_EP    ; bit=1 <=> voice is ON
  184.  
  185.     rts
  186.  
  187.  
  188. *-----------------------------------------------------------------------*
  189. ;
  190. ; Returns address of the UPS structure to EaglePlayer
  191.  
  192. SHO_StructInit
  193.     lea    SHO_StructAnalyzer(pc),a0
  194.  
  195.     rts
  196.  
  197.  
  198.  
  199. *-----------------------------------------------------------------------*
  200.  
  201.  
  202.     ELSEIF                ; TESTVERSION
  203.  
  204.  
  205. ;-------
  206. ; Small code to test the player under a debugger
  207.  
  208.  
  209.     moveq    #1,d0
  210.     bsr    SHO_InitSong
  211.  
  212.     move.l    $6c.w,Jmp+2
  213.     move.l    #Vbl,$6c.w
  214.     rts
  215.  
  216.  
  217. End
  218. ;;    bsr    StopSong
  219.     move.l    Jmp+2(pc),$6c.w
  220.     move.w    #$f,$dff096
  221.     rts
  222.  
  223.  
  224. Vbl
  225.     btst    #5,$dff01f
  226.     beq.s    Jmp
  227.  
  228. .wa    cmp.b    #70,$dff006
  229.     blt.s    .wa
  230.  
  231.     move.w    #$f00,$dff180
  232.  
  233.     movem.l    d0-a6,-(a7)
  234.     bsr    SHO_InterVBL
  235.     movem.l    (a7)+,d0-a6
  236.  
  237.     move.w    #$345,$dff180
  238.  
  239. Jmp    jmp    0.l
  240.  
  241.  
  242.  
  243.  
  244. SHO_StructAnalyzer            ; transmis à EaglePlayer pour gérer
  245.     ds.l    UPS_SizeOF        ; les analyzers
  246.  
  247.  
  248.     ENDC
  249.  
  250.  
  251.  
  252. ;------------------------------------------------------------------------
  253. ; Données pour EaglePlayer / Delitracker
  254.  
  255. SHO_DMA_EP    dc.w    %1111+$8000    ; voix actives depuis EaglePlayer
  256.  
  257. SHO_MasterVolA    dc.w    64        ; 0 .. 64
  258. SHO_MasterVolB    dc.w    64
  259. SHO_MasterVolC    dc.w    64
  260. SHO_MasterVolD    dc.w    64
  261.  
  262. SHO_StructA    dc.l    SHO_StructAnalyzer
  263. SHO_StructB    dc.l    SHO_StructAnalyzer+UPS_Modulo
  264. SHO_StructC    dc.l    SHO_StructAnalyzer+UPS_Modulo*2
  265. SHO_StructD    dc.l    SHO_StructAnalyzer+UPS_Modulo*3
  266.  
  267. SHO_OldPer1    dc.w    -1
  268. SHO_OldPer2    dc.w    -1
  269. SHO_OldPer3    dc.w    -1
  270. SHO_OldPer4    dc.w    -1
  271.  
  272.  
  273.  
  274. ;-----------------------------------------------------------------------
  275. ; Super Hang On Loader Music
  276. ; Original music by The Source (located in $6000) in 1988.
  277. ; Relocated on 29/03/97 by Mr.STYCKX
  278. ;
  279. ; SHO_InitSong : D0 = 1
  280. ; SHO_InterVBL : called every VBL
  281. ;
  282.  
  283.  
  284.  
  285. ;-----------------------------------------------------------------------
  286. ; Init la subsong D0
  287.  
  288. SHO_InitSong
  289.     subq.w    #1,d0            ; de 0 à 4
  290.     lsl.w    #3,d0            ; adresse 2 mots longs
  291.     lea    SongsAdr(pc),a0
  292.     move.l    4(a0,d0.w),D1        ; music speed
  293.     move.l    (a0,d0.w),D0        ; music data
  294.     bra    InitSong
  295.     
  296.  
  297.  
  298. ;-----------------------------------------------------------------------
  299. ; Routine appelée à chaque VBL
  300.  
  301. SHO_InterVBL
  302.     movem.l    D0/A0,-(SP)
  303.  
  304.     lea    SHO_StructAnalyzer(pc),a0
  305.     move.w    #-1,UPS_Enabled(a0)
  306.     move.w    #UPSB_Adr!UPSB_Len!UPSB_Per!UPSB_Vol!UPSB_DMACon,UPS_Flags(a0)
  307.  
  308.     move.w    UPS_Voice1Per(a0),SHO_OldPer1
  309.     move.w    UPS_Voice2Per(a0),SHO_OldPer2
  310.     move.w    UPS_Voice3Per(a0),SHO_OldPer3
  311.     move.w    UPS_Voice4Per(a0),SHO_OldPer4
  312.  
  313.     clr.w    UPS_Voice1Per(a0)
  314.     clr.w    UPS_Voice2Per(a0)
  315.     clr.w    UPS_Voice3Per(a0)
  316.     clr.w    UPS_Voice4Per(a0)
  317.  
  318.     move.w    SHO_DMA_EP(pc),d0
  319.     move.w    d0,UPS_DMACon(a0)
  320.     not.w    d0
  321.     and.w    #$f,d0
  322.     move.w    d0,$dff096        ; stop voices from EP
  323.  
  324.     bsr    PlaySong
  325.  
  326.     ; La replay de Nebulus remet la période à chaque VBL,ce qui perturbe
  327.     ; les analyzers. On ne transmet donc une période que si elle est
  328.     ; différente de la VBL précédente.
  329.  
  330.     lea    SHO_StructAnalyzer(pc),a0
  331.     move.w    UPS_Voice1Per(a0),d0
  332.     cmp.w    SHO_OldPer1(pc),d0    ; nouvelle fréquence
  333.     bne.s    .2            ; oui
  334.     clr.w    UPS_Voice1Per(a0)    ; non, on remet a 0
  335.  
  336. .2    move.w    UPS_Voice2Per(a0),d0
  337.     cmp.w    SHO_OldPer2(pc),d0
  338.     bne.s    .3
  339.     clr.w    UPS_Voice2Per(a0)
  340.  
  341. .3    move.w    UPS_Voice3Per(a0),d0
  342.     cmp.w    SHO_OldPer3(pc),d0
  343.     bne.s    .4
  344.     clr.w    UPS_Voice3Per(a0)
  345.  
  346. .4    move.w    UPS_Voice4Per(a0),d0
  347.     cmp.w    SHO_OldPer4(pc),d0
  348.     bne.s    .0
  349.     clr.w    UPS_Voice4Per(a0)
  350. .0
  351.  
  352.     clr.w    UPS_Enabled(a0)
  353.  
  354.     movem.l    (SP)+,D0/A0
  355.     rts
  356.  
  357.  
  358.  
  359. ;-----------------------------------------------------------------------
  360.  
  361.  
  362. ;-----------------------------------------------
  363. ;
  364. InitSong
  365.  
  366. lbC000052
  367.     bsr    lbC000232
  368.     tst.l    D0
  369.     beq.s    lbC0000A4
  370.     movem.l    D0/D1/A0,-(SP)
  371.     move.l    D1,lbL000496
  372.     move.l    D0,D1
  373.     move.l    D0,A0
  374.     add.l    #12,D1
  375.     move.l    D1,lbL00049A
  376.     move.l    D0,D1
  377.     add.l    (A0),D1
  378.     move.l    D1,lbL00049E
  379.     move.l    D0,D1
  380.     add.l    4(A0),D1
  381.     move.l    D1,lbL0004A2
  382.     add.l    8(A0),D0
  383.     move.l    D0,lbL0004A6
  384.     clr.l    lbL000492
  385.     st    lbB0004AA
  386.     movem.l    (SP)+,D0/D1/A0
  387. lbC0000A4    rts
  388.  
  389.  
  390.  
  391. ;-----------------------------------------------
  392. ;
  393. PlaySong
  394.  
  395. lbC000130
  396.     tst.w    lbB0004AA
  397.     beq.s    lbC00015C
  398.     movem.l    D0-D7/A0-A6,-(SP)
  399.     bsr    lbC00024A
  400.     bsr    lbC0001EC
  401.     bsr.s    lbC0001A6
  402.     bsr.s    lbC00015E
  403.     move.l    lbL000496,D0
  404.     add.l    D0,lbL000492
  405.  
  406.     tst.w    lbB0004AA
  407.     bne.s    .NoEnd
  408.     moveq    #1,d0
  409.     bsr    SHO_InitSong
  410.  
  411. .NoEnd    movem.l    (SP)+,D0-D7/A0-A6
  412. lbC00015C    rts
  413.  
  414. ;-------
  415.  
  416. lbC00015E
  417.     move.l    SHO_StructD(pc),a5
  418.     move.w    SHO_MasterVolD(pc),d7
  419.  
  420.     move.l    lbL0004A6,A0
  421.     move.w    lbL000492,D0
  422.     cmp.w    (A0),D0
  423.     bcs.s    lbC00015C
  424.     addq.w    #2,A0
  425.     move.w    (A0)+,D0
  426.     move.l    A0,lbL0004A6
  427.     tst.w    D0
  428.     bmi    lbC000232
  429.     bne.s    lbC000186
  430.     moveq    #3,D0
  431.     bra    lbC0002E4
  432.  
  433. lbC000186    lea    lbW000404,A1
  434.     and.w    #$7F,D0
  435.     sub.w    #$58,D0
  436.     add.w    D0,D0
  437.     move.w    0(A1,D0.W),D3
  438.     moveq    #3,D0
  439.     moveq    #7,D1
  440.     moveq    #-1,D2
  441.     moveq    #$40,D4
  442.     bra    lbC000312
  443.  
  444. ;-------
  445.  
  446. lbC0001A6
  447.     move.l    SHO_StructC(pc),a5
  448.     move.w    SHO_MasterVolC(pc),d7
  449.  
  450.     move.l    lbL0004A2,A0
  451.     move.w    lbL000492,D0
  452.     cmp.w    (A0),D0
  453.     bcs.s    lbC00015C
  454.     addq.w    #2,A0
  455.     move.w    (A0)+,D0
  456.     move.l    A0,lbL0004A2
  457.     tst.w    D0
  458.     bmi.s    lbC000232
  459.     bne.s    lbC0001CC
  460.     moveq    #2,D0
  461.     bra    lbC0002E4
  462.  
  463. lbC0001CC    lea    lbW000404,A1
  464.     and.w    #$7F,D0
  465.     sub.w    #$58,D0
  466.     add.w    D0,D0
  467.     move.w    0(A1,D0.W),D3
  468.     moveq    #2,D0
  469.     moveq    #7,D1
  470.     moveq    #-1,D2
  471.     moveq    #$40,D4
  472.     bra    lbC000312
  473.  
  474. ;-------
  475.  
  476. lbC0001EC
  477.     move.l    SHO_StructB(pc),a5
  478.     move.w    SHO_MasterVolB(pc),d7
  479.  
  480.     move.l    lbL00049E,A0
  481.     move.w    lbL000492,D0
  482.     cmp.w    (A0),D0
  483.     bcs.s    lbC00026A
  484.     addq.w    #2,A0
  485.     move.w    (A0)+,D0
  486.     move.l    A0,lbL00049E
  487.     tst.w    D0
  488.     bmi.s    lbC000232
  489.     bne.s    lbC000212
  490.     moveq    #1,D0
  491.     bra    lbC0002E4
  492.  
  493. lbC000212
  494.     lea    lbW000404,A1
  495.     and.w    #$7F,D0
  496.     sub.w    #$32,D0
  497.     add.w    D0,D0
  498.     move.w    0(A1,D0.W),D3
  499.     moveq    #1,D0
  500.     moveq    #6,D1
  501.     moveq    #2,D2
  502.     moveq    #$40,D4
  503.     bra    lbC000312
  504.  
  505.  
  506. lbC000232    clr.w    lbB0004AA
  507. ;;    move.w    #$380,$DFF09A
  508.     move.w    #7+8,$DFF096
  509.     IFEQ    SHO_TEST-0
  510.     move.l    SHO_SongEnd(pc),a0
  511.     jsr    (a0)
  512.     ENDC
  513.     rts
  514.  
  515. ;-------
  516.  
  517. lbC00024A
  518.     move.l    SHO_StructA(pc),a5
  519.     move.w    SHO_MasterVolA(pc),d7
  520.  
  521.     move.l    lbL00049A,A0
  522.     move.w    lbL000492,D0
  523.     cmp.w    (A0),D0
  524.     bcs.s    lbC00026A
  525.     addq.w    #2,A0
  526.     move.w    (A0)+,D0
  527.     move.l    A0,lbL00049A
  528.     tst.w    D0
  529.     bmi.s    lbC000232
  530.     bne.s    lbC00026C
  531. lbC00026A    rts
  532.  
  533. lbC00026C    cmp.b    #$24,D0
  534.     bne.s    lbC000282
  535.     moveq    #0,D0
  536.     moveq    #1,D1
  537.     moveq    #2,D2
  538.     move.w    #$E0,D3
  539.     moveq    #$40,D4
  540.     bra    lbC000312
  541.  
  542. lbC000282    cmp.b    #$25,D0
  543.     bne.s    lbC000298
  544.     moveq    #0,D0
  545.     moveq    #2,D1
  546.     moveq    #2,D2
  547.     move.w    #$E0,D3
  548.     moveq    #$40,D4
  549.     bra.s    lbC000312
  550.  
  551. lbC000298    cmp.b    #$27,D0
  552.     bne.s    lbC0002AE
  553.     moveq    #0,D0
  554.     moveq    #3,D1
  555.     moveq    #2,D2
  556.     move.w    #$E0,D3
  557.     moveq    #$40,D4
  558.     bra.s    lbC000312
  559.  
  560. lbC0002AE    cmp.b    #$28,D0
  561.     bne.s    lbC0002C4
  562.     moveq    #0,D0
  563.     moveq    #4,D1
  564.     moveq    #2,D2
  565.     move.w    #$E0,D3
  566.     moveq    #$40,D4
  567.     bra.s    lbC000312
  568.  
  569. lbC0002C4    lea    lbW000404,A1
  570.     and.w    #$7F,D0
  571.     sub.w    #$30,D0
  572.     add.w    D0,D0
  573.     move.w    0(A1,D0.W),D3
  574.     moveq    #0,D0
  575.     moveq    #5,D1
  576.     moveq    #2,D2
  577.     moveq    #$40,D4
  578.     bra.s    lbC000312
  579.  
  580. lbC0002E4    movem.l    D0/A0/A1,-(SP)
  581.     bsr.s    lbC0002F0
  582.     movem.l    (SP)+,D0/A0/A1
  583.     rts
  584.  
  585. lbC0002F0    and.w    #3,D0
  586.     lea    lbL00042A,A0
  587.     lsl.w    #2,D0
  588.     lea    0(A0,D0.W),A0
  589.     move.w    $12(A0),$DFF096        ; DMA OFF
  590. ;;    move.w    $10(A0),$DFF09A        ; INTENA OFF
  591.     rts
  592.  
  593. lbC000312    tst.w    D1
  594.     beq.s    lbC0002E4
  595.     cmp.w    #$10,D1
  596.     bhi.s    lbC0002E4
  597.     movem.l    D0-D7/A0-A2,-(SP)
  598.     cmp.w    #$7C,D3
  599.     bcc.s    lbC00032C
  600.     move.w    #$7C,D3
  601. lbC00032C    cmp.w    #$41,D4
  602.     bcs.s    lbC000336
  603.     move.w    #$40,D4
  604. lbC000336    lea    lbL000452,A2
  605.     lsl.w    #3,D1
  606.     lea    0(A2,D1.W),A2
  607.     bsr.s    lbC0002F0
  608.     move.l    (A0),A1
  609.     move.l    (a2),UPS_Voice1Adr(a5)
  610.     move.l    (A2)+,(A1)
  611.     move.w    (a2),UPS_Voice1Len(a5)
  612.     move.w    (A2)+,4(A1)
  613.     move.w    D3,6(A1)
  614.     move.w    d3,UPS_Voice1Per(a5)
  615.     move.w    d4,UPS_Voice1Vol(a5)
  616.     mulu    d7,d4            ; mastervol
  617.     lsr.w    #6,d4
  618.     move.w    D4,8(A1)
  619.     clr.w    UPS_Voice1Repeat(a5)    ; repeat ON
  620.  
  621. ;    move.w    #$C8,D0
  622. ;lbC000358    dbra    D0,lbC000358
  623.     moveq    #4-1,d0
  624. wa1    move.b    $dff006,d1
  625. wa12    cmp.b    $dff006,d1
  626.     beq.s    wa12
  627.     dbf    d0,wa1
  628.  
  629.     move.w    $22(A0),d0        ; DMA ON
  630.     and.w    SHO_DMA_EP(pc),d0
  631.     move.w    d0,$DFF096
  632.     tst.w    D2
  633.     bmi.s    lbC00037C
  634.  
  635. ;    move.w    #$C8,D0
  636. ;lbC00036C    dbra    D0,lbC00036C
  637.     moveq    #4-1,d0
  638. wa2    move.b    $dff006,d1
  639. wa22    cmp.b    $dff006,d1
  640.     beq.s    wa22
  641.     dbf    d0,wa2
  642.  
  643.     move.l    #lbL00041A,(A1)
  644.     move.w    #8,4(A1)
  645.     st    UPS_Voice1Repeat(a5)    ; repeat OFF
  646.  
  647. lbC00037C    movem.l    (SP)+,D0-D7/A0-A2
  648.     rts
  649.  
  650. lbC000382    move.w    #$780,$DFF09C
  651.     rte
  652.  
  653. ;fiX Label expected
  654.     dc.w    $1BF8,$1A65,$18EA,$1784,$1632,$14F3,$13C6,$12AA
  655.     dc.w    $119E,$10A1,$FB2,$ED0,$DFC,$D33,$C75,$BC2,$B19
  656.     dc.w    $A7A,$9E3,$955,$8CF,$850,$7D9,$768,$6FE,$699,$63B
  657.     dc.w    $5E1,$58D,$53D,$4F2,$4AB,$467,$428,$3EC,$3B4,$37F
  658.     dc.w    $34D,$31D,$2F1,$2C6,$29E,$279,$255,$234,$214,$1F6
  659.     dc.w    $1DA,$1BF,$1A6,$18F,$178,$163,$14F,$13C,$12B,$11A
  660.     dc.w    $10A,$FB,$ED
  661. lbW000404    dc.w    $E0,$D3,$C7,$BC,$B2,$A8,$9E,$95,$8D,$85,$7E
  662. lbL00042A
  663.     dc.l    $DFF0A0,$DFF0B0,$DFF0C0,$DFF0D0
  664.     dc.l    $00800001,$01000002,$02000004,$04000008
  665.     dc.l    $80808001,$81008002,$82008004,$84008008
  666.  
  667.  
  668. SAMPLE_START    =    $604AC
  669.  
  670. SampleAdr
  671.     dc.l    $69454-SAMPLE_START+SampleData,$2830000
  672.     dc.l    $6995A-SAMPLE_START+SampleData,$4E10000
  673.     dc.l    $60D42-SAMPLE_START+SampleData,$21D0000
  674.     dc.l    $6117C-SAMPLE_START+SampleData,$A810000
  675.     dc.l    $6267E-SAMPLE_START+SampleData,$14A60000
  676.     dc.l    $64FCA-SAMPLE_START+SampleData,$187C0000
  677.     dc.l    $680C2-SAMPLE_START+SampleData,$9C30000
  678.  
  679. lbL000452 = SampleAdr-8
  680.  
  681.  
  682. lbL000492    dc.l    0
  683. lbL000496    dc.l    $10000
  684. lbL00049A    dc.l    0
  685. lbL00049E    dc.l    0
  686. lbL0004A2    dc.l    0
  687. lbL0004A6    dc.l    0
  688. lbB0004AA    dcb.b    2,0
  689.  
  690.  
  691. ;-------
  692.  
  693. SHO_SongEnd    dc.l    0        ; SongEnd rout adr
  694.  
  695.  
  696. SongsAdr
  697.     dc.l    MusicData,$15000
  698.  
  699.  
  700. MusicData                    ; $6a31c .. $6cdef
  701.     incbin    b:SuperHangOn/SHO_Loader.mus
  702.  
  703.  
  704. ;-------
  705.  
  706.     section    SHO_smp,data_c
  707.  
  708. lbL00041A    dcb.l    4,0            ; EmptySample
  709.  
  710. SampleData                    ; $604ac .. 6a31c
  711.     incbin    b:SuperHangOn/SHO_Loader.smp
  712.  
  713. ;-------
  714.  
  715.     end
  716.